package com.m.demo

import com.m.IRule
import com.m.complex.OrRules
import com.m.rule.AbstractDim
import com.m.rule.LoginDim
/**
 * 功能：登录场景规则1示例<br/>
 * 规则内容：
 *  1. 次数超过9次 命中规则。
 *  2. 或 电话号码是15195957502
 *
 * @Author miracle
 */
@Deprecated
class LoginRule implements IRule {

    def orRules

    LoginRule() {
        orRules = new OrRules()
        orRules.addOperatorRule(new SpecialTelRule())
        orRules.addOperatorRule(new CountBeyond9Rule())
    }

    @Override
    boolean hitRule(AbstractDim abstractDim) {
        def dims = (LoginDim) abstractDim;

        // 定义组合规则，此处组合规则是"或"
        return orRules.hitRule(dims)
    }

    /**
     * 次数超过9次 命中规则。
     */
    class CountBeyond9Rule implements IRule {
        @Override
        boolean hitRule(AbstractDim abstractDim) {
            if (abstractDim.count > 9) {
                return true
            }
            return false
        }
    }

    /**
     * 电话号码是15195957502
     */
    class SpecialTelRule implements IRule {
        @Override
        boolean hitRule(AbstractDim abstractDim) {
            if ("15195957502".equalsIgnoreCase(abstractDim.loginName)) {
                return true
            }

            return false
        }
    }
}